//给两个整数数组 nums1 和 nums2 ，返回 两个数组中 公共的 、长度最长的子数组的长度 。
//
//
//
// 示例 1：
//
//
//输入：nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]
//输出：3
//解释：长度最长的公共子数组是 [3,2,1] 。
//
//
// 示例 2：
//
//
//输入：nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]
//输出：5
//
//
//
//
// 提示：
//
//
// 1 <= nums1.length, nums2.length <= 1000
// 0 <= nums1[i], nums2[i] <= 100
//
//
// Related Topics 数组与矩阵 二分查找 动态规划 滑动窗口 哈希函数 滚动哈希 👍 908 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
function findLength(nums1: number[], nums2: number[]): number {

    const length1: number = nums1.length,
        length2: number = nums2.length;
    const dp: number[] = new Array(length1 + 1).fill(0);
    let resMax: number = 0;
    for (let i = 1; i <= length1; i++) {
        for (let j = length2; j >= 1; j--) {
            if (nums1[i - 1] === nums2[j - 1]) {
                // 相当于从后往前
                dp[j] = dp[j - 1] + 1;
                resMax = Math.max(resMax, dp[j]);
            } else {
                dp[j] = 0;
            }
        }
    }
    return resMax;
};
//leetcode submit region end(Prohibit modification and deletion)
